package uiMain.menuconsola;

import gestorHotel.*;
import gestorHotel.reserva.PenalizacionCancelacion;
import gestorHotel.reserva.RestriccionReserva;
import gestorHotel.servicios.Bebida;
import gestorHotel.servicios.ServicioComunicacion;

import java.util.*;

public class OpcionDeMenuCrearHotel extends OpcionDeMenu {

	public void ejecutar() {
		Scanner in = new Scanner(System.in);
		Hotel hotel = new Hotel();
		
		System.out.print("Ingrese el nombre: ");
		String nombre = in.nextLine();

		if (Main.hoteles.containsKey(nombre)) {
			System.out.println("Error: El hotel ya existe!");
			return;
		}
		
		System.out.print("Ingrese la dirección: ");
		String direccion = in.nextLine();
		System.out.print("Ingrese la población: ");
		String poblacion = in.nextLine();
		System.out.print("Ingrese la provincia: ");
		String provincia = in.nextLine();
		System.out.print("Ingrese el país: ");
		String pais = in.nextLine();
		System.out.print("Ingrese el número de estrellas: ");
		int estrellas = Integer.parseInt(in.nextLine());
		
		// Ingresar una restricción de reserva
		System.out.print("Ingrese el máximo mes de adelanto: ");
		int maxMesAdelanto = Integer.parseInt(in.nextLine());
		System.out.print("Ingrese la máxima duración de una reserva: ");
		int maxDuracion = Integer.parseInt(in.nextLine());
		
		RestriccionReserva restriccion = new RestriccionReserva(maxMesAdelanto, maxDuracion);
		
		// Ingresar las penalizaciones por cancelación
		int[] antesDe = {5, 2, 1, 0};
		ArrayList<PenalizacionCancelacion> penalizaciones = new ArrayList<PenalizacionCancelacion>();
		for (int i = 0; i < antesDe.length; ++i) {
			System.out.print("Ingrese el costo por cancelar antes de " + antesDe[i] + " días (0-100): ");
			int costo = Integer.parseInt(in.nextLine());
			penalizaciones.add(new PenalizacionCancelacion((double)costo / 100.0, antesDe[i]));
		}
		
		// Crear servicios de internet, minutos nacionales e internacionales
		HashMap<String, ServicioComunicacion> servicios = new HashMap<String, ServicioComunicacion>();
		servicios.put("internet", new ServicioComunicacion("internet", 500));
		servicios.put("internacional", new ServicioComunicacion("internacional", 1000));
		servicios.put("nacional", new ServicioComunicacion("nacional", 200));
		
		// Crear bebidas
		HashMap<String, Bebida> bebidas = new HashMap<String, Bebida>();
		bebidas.put("cerveza", new Bebida("cerveza", "Pilsen", 1500, 1000000));
		bebidas.put("vino", new Bebida("vino", "Gato Negro", 15000, 1000000));
		bebidas.put("agua", new Bebida("agua", "Cristal", 2000, 1000000));
		bebidas.put("alcohol", new Bebida("alcohol", "Ron Medellín", 10000, 1000000));
		bebidas.put("gaseosa", new Bebida("gaseosa", "Coca-cola", 2500, 1000000));
		
		hotel.setNombre(nombre);
		hotel.setDireccion(direccion);
		hotel.setPoblacion(poblacion);
		hotel.setProvincia(provincia);
		hotel.setPais(pais);
		hotel.setNumEstrellas(estrellas);
		hotel.setRestriccion(restriccion);
		hotel.setPenalizaciones(penalizaciones);
		hotel.setServicios(servicios);
		hotel.setBebidas(bebidas);
		
		if (confirmarAccion()) {
			hotel.crear();
			System.out.println("El hotel " + nombre + " fue registrado exitosamente!");
		}
	}

	public String getDescripcion() {
		return "Crear nuevo hotel.";
	}

}
